#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <vector>

using namespace std;

struct ListNode {
    int val;
    ListNode* next;
    ListNode(int x) : val(x), next(NULL) {}
};

class Node {
   public:
    int val;
    Node* next;
    Node* random;

    Node(int _val) {
        val = _val;
        next = NULL;
        random = NULL;
    }
};

struct TreeNode {
    int val;
    TreeNode* left;
    TreeNode* right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

class Solution {
   public:
    int maxValue(vector<vector<int> >& grid) {
        for (int i = 1; i < grid.size(); i++) grid[i][0] += grid[i - 1][0];
        for (int i = 1; i < grid[0].size(); i++) grid[0][i] += grid[0][i - 1];
        for (int i = 1; i < grid.size(); i++) {
            for (int j = 1; j < grid[0].size(); j++) grid[i][j] += max(grid[i - 1][j], grid[i][j - 1]);
        }
        return grid[grid.size() - 1][grid[0].size() - 1];
    }
};

int main() {
    cout << "Hello, World!";
    // Solution()
    return 0;
}
